package cn.edu.zhku.citrusmonitor.util;

import java.sql.Connection;
import java.sql.SQLException;

public class ManagerThreadLocal {
	
	private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();

	// 得到一个连接
	public static Connection getConnection() {
		Connection conn = tl.get(); // 从当前线程中取出一个连接
		if (conn == null) {
			conn = C3P0Util.getConnection();// 从池中取出一个
			tl.set(conn); // 把conn放入到当前线程对象中
		}
		return conn;
	}

	// 开始事务
	public static void startTransaction() {
		try {
			getConnection().setAutoCommit(false);// 从当前线程对象中取出连接，并开启事务
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	// 提交事务
	public static void commit() {
		try {
			getConnection().commit();// 提交
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	// 回滚事务
	public static void rollback() {
		try {
			getConnection().rollback();// 回滚
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	// 关闭conn
	public static void close() {
		try {
			getConnection().close();// 把连接放回连接池
			tl.remove();	// 把当前对象的conn移除
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

}
